#ifndef __IPOSITION_H__
#define __IPOSITION_H__

#include "CTypes.h"

class IPosition
{
protected:
	vector3dvpos Position;
public:
	IPosition():Position((vPos)0.0,(vPos)0.0,(vPos)0.0)
	{
	}

	IPosition(vector3dvpos &newPos):Position(newPos)
	{

	}

	virtual ~IPosition()									{}

	inline vector3dvpos &GetPosition()						{	return Position;				}
	inline vPos GetPositionX()								{	return Position.X;				}
	inline vPos GetPositionY()								{	return Position.Y;				}
	inline vPos GetPositionZ()								{	return Position.Z;				}
	inline void SetPosition(vector3dvpos newv)				{	Position.Set(newv);				}
	inline void SetPosition(vPos newX,vPos newY,vPos newZ)	{	Position.Set(newX,newY,newZ);	}
	inline void SetPositionX(vPos newX)						{	Position.X = newX;				}
	inline void SetPositionY(vPos newY)						{	Position.Y = newY;				}
	inline void SetPositionZ(vPos newZ)						{	Position.Z = newZ;				}
	inline void SetPositionXY(vPos newX,vPos newY)          {   Position.X = newX;Position.Y = newY;    }
	inline void SetPositionXY(vector2dvpos newv)            {   SetPositionXY(newv.X,newv.Y);   }
	inline stringc GetPositionStr()                             {   return Position.GetStr();    }
};

#endif
